﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ComunesMGI.DataTypes;

namespace ClienteWinMGI.AccesoDatos
{
    class CtrMGIIncidentes:IMGIIncidentes
    {
        #region IMGIIncidentes Members


        /// <summary>
        /// Devuelve una lista con los datos de los incidentes que pertenecen al sistema del cliente
        /// </summary>
        /// <param name="cliente">contiene la informacion del cliente</param>
        /// <param name="sistema">contiene la informacion del sistema</param>
        /// <returns>Coleccion con los datos de los incidentes.</returns>
        public List<DataIncidente> getIncidentes(DataCliente cliente, DataSistema sistema)
        {
            MGIIncidentesWS.MGIIncidentesWSClient ws = new MGIIncidentesWS.MGIIncidentesWSClient();
            ws.Open();
            List<DataIncidente> ret = ws.getIncidentes(cliente, sistema);
            ws.Close();
            return ret;
         }


        /// <summary>
        /// Devuelve una coleccion con la informacion de las tareas para el sistema del cliente
        /// </summary>
        /// <param name="cliente">contiene la informacion del cliente</param>
        /// <param name="sistema">contiene la informacion del sistema</param>
        /// <returns>lista de DataTarea</returns>
        public List<DataTarea> getTareas(DataCliente cliente, DataSistema sistema, DataIncidente incidente)
        {
            MGIIncidentesWS.MGIIncidentesWSClient ws = new MGIIncidentesWS.MGIIncidentesWSClient();
            ws.Open();
            List<DataTarea> ret = ws.getTareas(cliente, sistema, incidente);
            ws.Close();
            return ret;
        }

        public List<DataCampo> getCampos(DataCliente cliente, DataSistema sistema)
        {
            MGIIncidentesWS.MGIIncidentesWSClient ws = new MGIIncidentesWS.MGIIncidentesWSClient();
            ws.Open();
            List<DataCampo> ret = ws.getCampos(cliente, sistema);
            ws.Close();
            return ret;
        }

        /// <summary>
        /// Asigna como responsable al usuario "usuario" de la tarea "tarea" del incidente "incidente"
        /// </summary>
        /// <param name="incidente">datos del incidente</param>
        /// <param name="tarea">datos de la tarea</param>
        /// <param name="usuario">datos del usuario</param>
        /// <returns></returns>
        public bool asignarResposable(DataSistema sistema, DataIncidente incidente, DataTarea tarea, DataUsuario usuario)
        {
            MGIIncidentesWS.MGIIncidentesWSClient ws = new MGIIncidentesWS.MGIIncidentesWSClient();
            ws.Open();
            bool ret = ws.asignarResponsable(sistema, incidente, tarea, usuario);
            ws.Close();
            return ret;
        }

        public DataAltaIncidente addIncidente(DataSistema incidente)
        {
            MGIIncidentesWS.MGIIncidentesWSClient ws = new MGIIncidentesWS.MGIIncidentesWSClient();
            ws.Open();
            DataAltaIncidente ret = ws.addIncidente(incidente);
            ws.Close();
            return ret;
        }
        #endregion
    }
}
